#!/bin/bash
set -e

# Show 环境定时任务更新脚本
# 当修改了 Python 代码后，使用此脚本更新镜像

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"

echo "===== Show 环境定时任务更新 ====="
echo "时间: $(date '+%Y-%m-%d %H:%M:%S')"
echo ""

# 1. 构建镜像
echo "1. 构建镜像..."
cd "$PROJECT_ROOT"
docker build --no-cache -t localhost/python-app:1.0.0 .

# 2. 导出镜像
echo "2. 导出镜像..."
docker save -o python-app-1.0.0.tar localhost/python-app:1.0.0

# 3. 上传到 show-ECS
echo "3. 上传到 show-ECS (8.145.38.110)..."
scp python-app-1.0.0.tar root@8.145.38.110:/tmp/

# 4. 导入镜像到 show-worker 节点
echo "4. 导入镜像到 show-worker 节点..."
ssh root@8.145.38.110 "k3s ctr images import /tmp/python-app-1.0.0.tar"

# 5. 重启 CronJob（删除现有 Job，下次调度自动使用新镜像）
echo "5. 触发更新（删除现有 Job）..."
ssh root@8.145.38.110 "kubectl delete jobs --all -n tasks-show 2>/dev/null || true"

# 6. 清理本地镜像文件
echo "6. 清理本地文件..."
rm -f python-app-1.0.0.tar

echo ""
echo "===== 更新完成 ====="
echo "镜像已更新到 show-worker 节点，下次 CronJob 调度时将使用新镜像"
echo ""
echo "手动测试新镜像:"
echo "  ssh root@8.145.38.110 'kubectl create job test-new-\$(date +%s) --from=cronjob/daily-tasks -n tasks-show'"
echo "  ssh root@8.145.38.110 'kubectl logs -n tasks-show -l app=daily-tasks --tail=100 -f'"
